// 管理购物车的数据
export default {
	namespaced: true,
	state: {
		num: 11,
		// cart: []
		cart: uni.getStorageSync('cart') || []
	},
	mutations: {
		// 向cart中添加商品信息
		// goodsObj: id & name & price & logo & status
		addToCart(state, goodsObj) {
			const obj = state.cart.find(item => {
				return item.goods_id === goodsObj.goods_id
			})
			if (!obj) {
				state.cart.push(goodsObj)
			} else {
				obj.goods_count += 1
			}
			// 将数据保存到本地
			uni.setStorageSync('cart', state.cart)
		},
		// 用来修改商品对应的状态
		changeStatusvx(state, goodsObj) {
			const obj = state.cart.find(item => {
				return item.goods_id === goodsObj.goods_id
			})
			if (obj) {
				obj.goods_status = goodsObj.goods_status
			}
			// 将修改后的数据保存到本地
			uni.setStorageSync('cart', state.cart)
		},
		// 用来修改商品对应的数量
		changeNumvx(state, goodsObj) {
			// 根据 goodsObj 找到数据源中对应的数据
			const obj = state.cart.find(item => {
				return item.goods_id === goodsObj.goods_id
			})
			if (obj) {
				obj.goods_count = goodsObj.goods_count
			}
			// 将数据保存到本地
			uni.setStorageSync('cart', state.cart)
		},
		// 删除商品
		delGoods(state, id) {
			state.cart = state.cart.filter(item => {
				return item.goods_id !== id
			})
			// 将数据保存到本地
			uni.setStorageSync('cart', state.cart)
		},
		// 修改所有商品的状态
		changeAllState(state, bool) {
			// 将所有的商品的状态改为 bool
			state.cart.forEach(item => {
				item.goods_status = bool
			})
			// 将修改后的数据存储到本地
			uni.setStorageSync('cart', state.cart)
		}
	},
	actions: {},
	getters: {
		// 商品的总数
		total: function(state) {
			// 	let sum = 0
			// 	state.cart.forEach(item => {
			// 		sum += item.goods_count
			// 	})
			// 	return sum
			// }
			// 使用 reduce 方法进行改造
			return state.cart.reduce((sum, item) => {
				sum += item.goods_status ? item.goods_count : 0
				return sum
			}, 0)
		},
		isCheckAll(state) {
			return state.cart.every(item => item.goods_status)
		},
		total_price(state) {
			// 计算所有选中商品的总价
			return state.cart.reduce((sum, item) => {
				return sum += item.goods_status ? item.goods_count * item.goods_price : 0
			}, 0)
		}
	}
}
